<script>
    // es5创建对象: 构造+原型 
    function Person(name, age){
        // 可变化的放在构造函数中
        this.name = name;
        this.age = age;   
    }
    // 不变的、共享的放在原型上
    Person.prototype.eat = function(){
        console.log('吃饭');
    }

    // 1.es6：使用class创建类
    class Student{
        // 添加属性
        name = '小明';
        // study = function(){
        //     console.log('学习');
        // }
        // 添加方法，方法自动添加到原型上
        study(){
            console.log('学习');
        }
    }
    // 通过new实例化对象
    // var s1 = new Student();
    var s1 = new Student; // 可以省略小括号
    console.log(s1); // Student {name: '小明'}

    // 2.使用constructor构造器函数创建类
    class Teacher{
        // 每个对象的name、age、sex都不一样
        constructor(name, a, sex){ // constructor构造器函数，每次实例对象时，会自动执行
            this.name = name;
            this.age = a;
            this.sex = sex;
            console.log(this, '指向实例化出的对象');
        }
        // 添加方法，自动添加到原型上
        eat(){
            console.log(this, '吃饭', '指向实例化出的对象');
        }
        sleep(){
            // ...
        }
    }
    // 通过new进行实例化
    let t1 = new Teacher('小兰', 15, '女');
    console.log(t1);
    t1.eat();

    console.log( new Teacher('小李', 20, '男') );
</script>